A database is a collection of stored data that is logically related and that is accessible by one or more users or applications. A popular type of database is the relational database management system (RDBMS), which includes relational tables, also referred to as relations, made up of rows and columns (also referred to as tuples and attributes). Each row represents an occurrence of an entity defined by a table, with an entity being a person, place, thing, or other object about which the table contains information.
Database systems and other data stores may include numerous processing nodes used to execute database queries, as well as other database utility operations. In some scenarios, a processing node may fail to appropriately respond to the other processing nodes in the system, but may still be capable of performing input/output (I/O) to the disks storing database data. In this situation, even though the other processing nodes may be able to perform the responsibilities of the failed node, the failed node may begin to operate again. This results in two processing nodes running at least some of the same processes, which may both independently write to the same disks. This condition can result in undesirable manipulation of the database data.
In a network setting, storage cluster nodes may provide network access to data on storage devices to the processing nodes. Some storage cluster nodes may implement small computer system interface (SCSI) protocols, such as “inquiry” and “persistent reservations” in order to prevent these failed nodes to access data on the storage devices. However, some storage cluster nodes do not implement such protocols or may implement only portions, and thus, may expose the storage devices to undesired access from these failed nodes. Thus, a protection scheme for storage devices in such a network configuration is desirable.